package utils.advancedSocket;
import java.util.EventObject;

import protocol.arq.ARQ;

/**
 * Represente un evenement de fermeture de connexion pour un {@link ARQ}.
 * 
 * @author Bertholet Damien & Daoust Julien
 */
public class AdvancedSocketCloseEvent extends EventObject {

	private static final long serialVersionUID = -5215578235971244517L;

	private String errorMessage;

	/**
	 * Constructeur.
	 * 
	 * @param advancedSocket
	 *            La source de l'evenement.
	 */
	public AdvancedSocketCloseEvent(AdvancedSocket advancedSocket) {
		this(advancedSocket, null);
	}

	/**
	 * Constructeur.
	 * 
	 * @param advancedSocket
	 *            La source de l'evenement.
	 * @param errorMessage
	 *            Messages d'erreur. ; null si la fermeture de la connexion
	 *            n'est pas du a un probleme.
	 */
	public AdvancedSocketCloseEvent(AdvancedSocket advancedSocket,
	        String errorMessage) {
		super(advancedSocket);
		this.errorMessage = errorMessage;
	}

	/**
	 * Retourne l'{@link ARQ} source de l'evenement.
	 * 
	 * @return L'{@link ARQ} source de l'evenement.
	 */
	public ARQ getARQ() {
		return (ARQ) getSource();
	}

	/**
	 * Retourne le message d'erreur.
	 * 
	 * @return Le message d'erreur. ; null si la fermeture de la connexion n'est
	 *         pas du a un probleme.
	 */
	public String getErrorMessage() {
		return errorMessage;
	}

	/**
	 * Indique si la fermeture de la connexion est du a un probleme.
	 * 
	 * @return True s'il y a eu un probleme. ; False sinon.
	 */
	public boolean isConnectionError() {
		return errorMessage != null;
	}
}